package com.terren.spider.core.html.scheme;

import java.util.List;
import java.util.Map;
import java.util.Set;

import com.terren.spider.core.html.configuration.Configuration;
import com.terren.spider.entity.biz.ArticleSearch;
import com.terren.spider.entity.core.Entry;

import us.codecraft.webmagic.Page;
/**
 * 自定义方案接口 
 *  
 * 
 * 通过`t_source`表中的act 字段作为此接口的实现类文件的命名规范
 * 
 * （例如：sourceid=1001 sourcename='百度新闻' act=baiduNews
 *   创建接口实现类的命名BaiduNewsScheme
 *   
 *     act =  auto.sohu.search
 *     创建接口实现类的命名 Auto_Sohu_SearchScheme
 *  ）
 * @author chengyu
 *
 */
public interface ICustomScheme {
	/**
	 * 添加入口页url
	 * @param configuration
	 * @return
	 */
	public Set<String> addEntryUrl(Configuration configuration);
	
	/**
	 * 自定义查找列表页的分页url
	 * @param page
	 * @param entry
	 * @return
	 */
	public Set<String> findHelpPaginationUrl(Page page,Entry entry);
	/**
	 * 自定义查找目标页的分页url
	 * @param page
	 * @param entry
	 * @return
	 */
	public Set<String> findTargetPaginationUrl(Page page,Entry entry);
	
	/**
	 * 查找列表页url
	 * @param page
	 * @param entry
	 * @return
	 */
	public Set<String> findHelpUrl(Page page,Entry entry);
	/**
	 * 自定义添加目标页url
	 * @param page
	 * @param entry
	 * @return
	 */
	public Set<String> findTargetUrl(Configuration configuration);
	
	/**
	 * 自定义设置头部
	 * @param entry
	 * @return
	 */
	public Map<String, String> getHeader(Entry entry);
	
	/**
	 * 设置cookie
	 * @param entry
	 * @return
	 */
	public Map<String, String> getCookie(Entry entry);
	/**
	 * 抓取后处理
	 * @param configuration
	 */
	public void postFetch(Configuration configuration);
	/**
	 * 自定义分析预处理
	 * @param page
	 * @param configuration
	 */
	public void preParse(Page page,Configuration configuration);
	
	/****************************************    代理     begin****************************************************/
	/**
	 * 代理服务器是否使用阿布云（这里是指 代理服务器的阿布云配置：aby=true）
	 * @param page
	 * @param configuration
	 */
	public boolean useAbuyunProxy();
	/**
	 * 代理服务器设置等待渲染时间（）
	 * @param entry
	 * @return
	 */
	public Integer setTimeWait();
	/**
	 * 设置分页（动态加载的滚动条下拉触发的分页数量）
	 * @param entry
	 * @return
	 */
	public Integer setRenderPage();
	/****************************************    代理 end****************************************************/
	
	
	
	
	
	
	/****************************************    搜索      begin****************************************************/
	/**
	 * 搜索页 每页显示的条目数
	 * @return
	 */
	public Integer setPageRecordSize();
	/**
	 * 搜索页 标题 链接等
	 * @param page
	 * @param entry
	 * @return
	 */
	public List<ArticleSearch> findTitleInfo(Page page,Entry entry);
	/****************************************    搜索      end****************************************************/
}
